package com.ruoyi.system.service.impl;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.List;

import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.uuid.IdUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.TbCaApplyMapper;
import com.ruoyi.system.domain.TbCaApply;
import com.ruoyi.system.service.ITbCaApplyService;

/**
 * 【请填写功能名称】Service业务层处理
 *
 * @author ruoyi
 * @date 2024-06-11
 */
@Service
public class TbCaApplyServiceImpl implements ITbCaApplyService
{
    @Autowired
    private TbCaApplyMapper tbCaApplyMapper;

    @Override
    public TbCaApply getTbCaApplyByName(TbCaApply name){
        return tbCaApplyMapper.selectTbCaApplyByName(name);
 }
    /**
     * 查询【请填写功能名称】
     *
     * @param id 【请填写功能名称】主键
     * @return 【请填写功能名称】
     */
    @Override
    public TbCaApply selectTbCaApplyById(Long id)
    {
        return tbCaApplyMapper.selectTbCaApplyById(id);
    }

    /**
     * 查询【申请教室】列表
     *
     * @param tbCaApply 【申请教室】
     * @return 【申请教室】
     */
    @Override
    public List<TbCaApply> selectTbCaApplyList(TbCaApply tbCaApply)
    {
        List<TbCaApply> tbCaApplies = tbCaApplyMapper.selectTbCaApplyList(tbCaApply);
        tbCaApplies.stream().forEach(item->{
            Long caTime = item.getCaTime();
        // 将时间戳转换为年月日格式
            String formattedDate =   DatePattern.NORM_DATETIME_FORMAT.format(DateUtil.date(caTime));
            item.setCaTimeStr(formattedDate);

            Long caBorrowStartTime = item.getCaBorrowStartTime();
            // 将时间戳转换为年月日格式
            String format = DatePattern.NORM_DATETIME_FORMAT.format(DateUtil.date(caBorrowStartTime));
            item.setCaBorrowStartTimeStr(format);

            Long caBorrowEndTime = item.getCaBorrowEndTime();
            // 将时间戳转换为年月日格式
            String format1 = DatePattern.NORM_DATETIME_FORMAT.format(DateUtil.date(caBorrowEndTime));
            item.setCaBorrowEndTimeStr(format1);

        });
        return tbCaApplies;
    }

    /**
     * 新增【申请教室】
     *
     * @param tbCaApply 【申请教室】
     * @return 结果
     */
    @Override
    public int insertTbCaApply(TbCaApply tbCaApply)
    {
        long now = System.currentTimeMillis();
        tbCaApply.setCaTime(now);

        Long caBorrowStartTime = tbCaApply.getCaBorrowStartTime();

        Long caBorrowTime = tbCaApply.getCaBorrowTime();
//        计算截止时间
        tbCaApply.setCaBorrowEndTime(caBorrowStartTime+(caBorrowTime*60*1000));

        String uuid = IdUtils.fastSimpleUUID();
        tbCaApply.setCaId(uuid);


        if (tbCaApply.getCaName() == null) {
            tbCaApply.setCaStatus("已通过");
        } else {
            // 找到这条数据
//            开始借用 - 截止时间
            TbCaApply existingTbCaApply = this.getTbCaApplyByName(tbCaApply);
            if (existingTbCaApply == null) {
                tbCaApply.setCaStatus("已通过");
            }else {
                tbCaApply.setCaStatus("未通过");
            }
        }
        return tbCaApplyMapper.insertTbCaApply(tbCaApply);
    }

    /**
     * 修改【申请教室】
     *
     * @param tbCaApply 【申请教室】
     * @return 结果
     */
    @Override
    public int updateTbCaApply(TbCaApply tbCaApply)
    {
        return tbCaApplyMapper.updateTbCaApply(tbCaApply);
    }

    /**
     * 批量删除【请填写功能名称】
     *
     * @param ids 需要删除的【请填写功能名称】主键
     * @return 结果
     */
    @Override
    public int deleteTbCaApplyByIds(Long[] ids)
    {
        return tbCaApplyMapper.deleteTbCaApplyByIds(ids);
    }

    /**
     * 删除【申请教室】信息
     *
     * @param id 【申请教室】主键
     * @return 结果
     */
    @Override
    public int deleteTbCaApplyById(Long id)
    {
        return tbCaApplyMapper.deleteTbCaApplyById(id);
    }
}
